package com.ly.iot.service;

import java.util.List;
import java.util.concurrent.ExecutionException;
//阿里iot物联网平台 api方法
public interface AlIotService {

    /**
     * @describe：客户端接收阿里云服务端推送过来的数据
     * @author：李勇
     * @date：2022/11/9
     * @param
     * @return：void
     */
    void startAmqpService() throws Exception;




    /**
     * @describe：基于官方文档给的demo下发命令,异步的，单台设备发布
     * @author：李勇
     * @date：2022/11/9
     * @param iotInstanceId 实例ID。您可在物联网平台控制台的实例概览页面，查看当前实例的ID
     * @param productKey 设备所隶属的产品ProductKey
     * @param deviceName 设备名称
     * @param iotId 设备ID。物联网平台为该设备颁发的ID，设备的唯一标识符
     * @param items 要设置的属性信息，数据格式为JSON eg:{"DIN1":"1"}
     * @return：java.lang.String
     */
    String sendCommandSingleDevice(String iotInstanceId,String productKey,String deviceName,
                        String iotId,String items) throws ExecutionException, InterruptedException;


    /**
     * @describe：基于官方文档给的demo下发命令多台设备同时发布一条命令,异步的
     * @author：李勇
     * @date：2022/11/9
     * @param iotInstanceId 实例ID。您可在物联网平台控制台的实例概览页面，查看当前实例的ID
     * @param productKey 设备所隶属的产品ProductKey
     * @param deviceNameList 设备名称的集合
     * @param items 要设置的属性信息，数据格式为JSON eg:{"DIN1":"1"}
     * @return：java.lang.String
     */
    String sendCommandMultipleDevice(String iotInstanceId, String productKey, List<String> deviceNameList,String items) throws ExecutionException, InterruptedException;



    //topic AP向设备发送指令信息
    
    /**
     * @describe：RRPC方式向设备发送消息
     * @author：李勇
     * @date：2022/11/11 
     * @param iotInstanceId 实例ID。您可在物联网平台控制台的实例概览页面，查看当前实例的ID
     * @param productKey  设备所隶属的产品ProductKey
     * @param deviceName 设备名称
     * @param timeOut 等待设备回复消息的时间，单位是毫秒，取值范围是1,000 ~8,000
     * @param requestBase64Byte 要发送的消息内容经过Base64编码得到的字符串格式数据，例如dGhpcyBpcyBhbiBleGFtcGxl。
     * @param topic 使用自定义的RRPC相关Topic。需要设备端配合使用，请参见设备端开发自定义Topic。
     *              不传入此参数，则使用系统默认的RRPC Topic。
     * @return：java.lang.String
     */       
    String sendCommandRRPCTopicDevice(String iotInstanceId,String productKey,String deviceName,
                                  int timeOut,String requestBase64Byte) throws ExecutionException, InterruptedException;





    //余下还有很多的api 去官网查看即可 地址 物联网平台-->文档与工具-->物联网设备接入与管理
                                        //-->最下面API列表--->物模型使用API(都是物模型的API，很多)

}
